#ifndef __ESP01S_CONTROL_H
#define __ESP01S_CONTROL_H

#include "stm32f10x.h" 
#include "freertos.h"
#include "task.h"

#include <stdio.h> 	 // snprintf
#include <string.h>  // strcmp()
#include <stdint.h>  // uint8_t
//#include <stdlib.h>  // itoa()

#include "Project_Config.h"
#include "LED_SystemIndicator.h"
#include "LED_SensorTrigger.h"
#include "USART_Config.h"
#include "Buzzer_Init.h"
#include "OLED.h"
#include "ADC.h"

// 状态表
typedef enum {
    ESP_STATE_IDLE = 0,            // 初始状态
    ESP_STATE_WIFI_CONNECT = 1,    // 连接WiFi
    ESP_STATE_TCP_CONNECT = 2,     // 连接TCP服务器
    ESP_STATE_TX_PREPARE = 3,      // 准备发送数据
    ESP_STATE_TRANSPARENT = 4,     // 透传模式
	ESP_STATE_HTTP_CONNECT = 5,	   // 连接HTTP
    ESP_STATE_ERROR = 6            // 结束状态

//    ESP_STATE_EXIT_TRANSPARENT,// 退出透传(+++)
//    ESP_STATE_TX_STOP,         // 关闭发送模式
//    ESP_STATE_TCP_DISCONNECT,  // 关闭TCP连接
} esp_state_t;

// 联网流程
void ESP_AutoConnect(void);
void ESP_StateTransition(char *resp);

static void SendWiFiCredentials(void);
static void StartTCPConnection(void);
static void EnableTransparentMode(void);
static void PrepareToSend(void);
static void EnterHTTPMode(void);
static void ResetConnection(void);
//static void StartSensorTask(void);
static void SendATCommand(const char *cmd);
static const char* GetCurrentCommand(void);
static void UpdateOLED(const char *msg);

// 传送数据
void vTask_ESP01s_SensorData_Push(void *arg);
void ESP_SendPacket(void);
	
#endif
